<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue"></script>
    <style>

    </style>
</head>

<body>
    <div id="app">
    </div>
</body>
<script>
    let arr = [2, 3, 4];
    let temArr = [8, 9, 10];

    // 数组前面加入元素   返回值是数组长度
    arr.unshift(1)
    console.log(arr)
    console.log('-------------------------')

    // 数组后面加入  返回值是数组长度
    // 可以同时push多个值  unshift同理
    arr.push(5)
    arr.push(6, 7)
    arr.push(...temArr)
    console.log(arr)
    console.log('--------------------------')

    // 添加,删,修改
    arr.splice(arr.length, 0, 11, 12, 13) //增
    console.log(arr)
    arr.splice(0, 2) //删
    console.log(arr)
    arr.splice(0, 3, 1, 2, 3, 4, 5) //改  从下标为0开始删三个，然后加入后面的
    console.log(arr)

    // 以下方法都不会改变原始数组
    // 转为字符串
    console.log(arr.join(','))
    console.log(arr.join(',').split(','))


    //返回存在元素索引值
    console.log('abc'.indexOf('d')) // -1  代表不存在

    /*
        if ('abc'.indexOf('xxx') > -1) {
            //存在
        } else {
            //不存在
        }
    */
    console.log('------------------------------');

    //引用数据类型
    function test(p) {
        // 此处有个隐式的 p = 实参

        // 改变了p指向，现在p指向了另一个内存。所以打印obj并不会有任何变化
        p = {
            a: 3
        }

        // 此时p和obj指向同一个内存地址，p改变了那么obj也会改
        // p.a = 3
        // console.log(p)
    }
    let obj = {
        a: 1,
        b: 2
    }
    test(obj)
    console.log(obj)
    console.log('------------------------------');
</script>

</html>